Fix problem in skytraq on 64-bit systems when in any hemisphere with negative coordin...
authorrobertlipe@gmail.com <robertlipe@gmail.com@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 14 May 2012 14:04:16 +0000 (14:04 +0000)
committerrobertlipe@gmail.com <robertlipe@gmail.com@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 14 May 2012 14:04:16 +0000 (14:04 +0000)
git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4176 f51c46e8-681c-474f-0cfe-069cfd0219fb

gpsbabel/skytraq.c
gpsbabel/testo.d/classic-4.test
gpsbabel/testo.d/skytraq.test [new file with mode: 0644]

index e2e0ff4d7b1f1774e3aeeb35f1fe8c135650da58..0b49d449f292814d09e74aead13ddfa7c4f46fc7 100644 (file)
@@ -585,18 +585,18 @@ ECEF_to_LLA(double x, double y, long z, double *lat, double *lon, double *alt)
 }
 
 typedef struct {
-  short gps_week;
-  long gps_sec;
-  unsigned long x;
-  unsigned long y;
-  unsigned long z;
+  gbuint32 gps_week;
+  gbuint32 gps_sec;
+  gbint32  x;
+  gbint32  y;
+  gbint32  z;
 } full_item;
 
 typedef struct {
-  short dt;
-  short dx;
-  short dy;
-  short dz;
+  gbint16 dt;
+  gbint16 dx;
+  gbint16 dy;
+  gbint16 dz;
 } compact_item;
 
 struct full_item_frame {
@@ -626,7 +626,7 @@ process_data_item(struct read_state *pst, const item_frame *pitem, int len)
 {
   int res = 0;
   double lat, lon, alt;
-  unsigned int ts;
+  gbint32 ts;
   int poi = 0;
   full_item f;
   compact_item c;
index a85b1e2b27d05c026c1cebc133f50ad4948c3225..2c4ef6a754c1b0ee531535ed06621ef6b507ad3a 100755 (executable)
@@ -309,12 +309,6 @@ compare ${REFERENCE}/route/naviguide.gpx ${TMPDIR}/naviguide.gpx
 gpsbabel -i vpl -f ${REFERENCE}/track/vpl_reference.vpl -o gpx -F ${TMPDIR}/vpl_reference.gpx
 compare ${TMPDIR}/vpl_reference.gpx ${REFERENCE}/track/vpl_reference.gpx
 
-#
-# Skytraq logger tests
-#
-rm -f ${TMPDIR}/skytraq.*
-gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq.bin -o gpx -F ${TMPDIR}/skytraq.gpx
-compare ${TMPDIR}/skytraq.gpx ${REFERENCE}/skytraq.gpx
 #
 # Teletype tests
 #
diff --git a/gpsbabel/testo.d/skytraq.test b/gpsbabel/testo.d/skytraq.test
new file mode 100644 (file)
index 0000000..43bf890
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# Skytraq logger tests
+#
+rm -f ${TMPDIR}/skytraq.*
+gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq.bin -o gpx -F ${TMPDIR}/skytraq.gpx
+compare ${TMPDIR}/skytraq.gpx ${REFERENCE}/skytraq.gpx
+
+#
+# The original was recorded in Germany, thus all coordinates are positive.
+# This one is in North America and triggered a sign extension bug on 64-bit
+# systems prior to revision 4176.
+gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq-2.bin -o gpx -F ${TMPDIR}/skytraq-2.gpx
+compare ${TMPDIR}/skytraq-2.gpx ${REFERENCE}/skytraq-2.gpx